<?php
/**
 * Created by PhpStorm.
 * User: mojie126
 * Date: 2017/5/23
 * Time: 下午9:30
 */

namespace app\common;

use think\queue\Job;

class EmailQueueJobs
{
	public function fire(Job $job, $data)
	{
		$isJobDone = $this->doHelloJob($data);

		if ($isJobDone) {
			$job->delete();
		} else {
			if ($job->attempts() > 3) {
				//可以删除该任务
				//$job->delete();

				//也可以重新发布这个任务
				$job->release(5); //$delay为延迟时间，表示该任务延迟5秒后再执行
			}
		}
	}

	private function doHelloJob($data)
	{
		try {
			$form = config("smtp.username");
			$mail = new \PHPMailer();
			$mail->isSMTP();// 使用SMTP服务
			$mail->isHTML(TRUE);
			$mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
			$mail->Host = config("smtp.host");// 发送方的SMTP服务器地址
			$mail->SMTPAuth = TRUE;// 是否使用身份验证
			$mail->Username = $form;//发送方的163邮箱用户名，就是你申请163的SMTP服务使用的163邮箱
			$mail->Password = config("smtp.password");// 发送方的邮箱密码，注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码！
			$mail->SMTPSecure = config("smtp.secureprotocol");// 使用ssl协议方式
			$mail->Port = config("smtp.port");// 163邮箱的ssl协议方式端口号是465/994

			$mail->setFrom($form, APP_NAME);// 设置发件人信息，如邮件格式说明中的发件人，这里会显示为Mailer(xxxx@163.com），Mailer是当做名字显示
			$mail->addAddress($data['mailto'], "");// 设置收件人信息，如邮件格式说明中的收件人，这里会显示为Liang(yyyy@163.com)
			//$mail->addReplyTo($form, "Reply");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
			//$mail->addCC($form);// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
			//$mail->addBCC($form);// 设置秘密抄送人(这个人也能收到邮件)
			//$mail->addAttachment("bug0.jpg");// 添加附件

			$mail->Subject = $data['subject'];// 邮件标题
			$mail->Body = $data['msg'];// 邮件正文
			$mail->send();

//			mail($data['mailto'], $data['subject'], $data['msg'], $data['from']);
		} catch (\Exception $e) {
			return FALSE;
		}

		return TRUE;
	}
}